﻿#pragma once
#include <string>
#include <vector>
#include <fstream>
#include <windows.h>

// 单元
struct sUnit
{
	// 标识
	std::string tag;
	// 编码
	std::string code;
	// 回调
	std::string click;
	// 跳转方式
	std::string gotoo;

	void read(std::ifstream& ifile);
	void write(std::ofstream& ofile, const char* sapce_enter) const;
};

// 建筑物
struct sBuilding : public sUnit
{
	// 楼号
	std::string tag2;
	// 单元组
	std::vector<sUnit> units;

	void read(std::ifstream& ifile);
	void write(std::ofstream& ofile) const;
};


struct sInfo : public sUnit
{
	// 地址
	std::string addr;
	// 门号
	// 操作id
	std::string operid;
	// 建筑组
	std::vector<sBuilding> buildings;
	
	void read(std::ifstream& ifile);
	void write(std::ofstream& ofile) const;
};

class cHtml
{
public:
	// 获取operid
	static std::string getOperid(const std::string& url);
	// 获取网页内容
	static std::string getHtml(const std::string& url);
	// 解析网页内容
	static sInfo getInfo(const std::string& html);
	// 解析网页内容(建筑)
	static void getInfo(const std::string& html, sBuilding& building);

	static std::string toStr(const char* str);

	static std::string toGBK(const char* str);
};